package Presentacion.Deposito;

import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JButton;

import java.awt.Font;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

import javax.swing.JLabel;
import javax.swing.JComboBox;
import javax.swing.JOptionPane;
import javax.swing.JSeparator;
import javax.swing.JTextField;

import java.sql.SQLException;
import java.util.Date;
import java.util.List;

import Fisica.Cooperativa.ProcCoope;
import Logica.Cooperativa.Comprobante;
import Logica.Cooperativa.Deposito;
import Logica.Cooperativa.Operador;
import Presentacion.Inicio.Principal;

public class CargaFacturaUsuarioComprobante extends JFrame {
	private Principal p;
	
	private JPanel contentPane;
	private JTextField tfFecha;
	
	public JComboBox cbComprobante, cbUsuarios, cbDeposito;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					CargaFacturaUsuarioComprobante frame = new CargaFacturaUsuarioComprobante(new Principal());
//					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	   //CARGA LISTA DE USUARIOS
  public void initUsuario() throws SQLException{
	  this.setVisible(true);
      cbUsuarios.removeAllItems();
      List<Operador>list = null;
      
      list = ProcCoope.lisOperador();      
     
      cbUsuarios.addItem("");  
      for(int i = 0; i <list.size(); i++) {
          String a = list.get(i).getApellido().toString();
          cbUsuarios.addItem(a);
         }
      }
  
  public void fecha(){
	  tfFecha.setEditable(true);
	  tfFecha.setText(Logica.Util.getFechaActual());
	  tfFecha.setEditable(false);
	  
  }
  
  //CARGA LISTA DE COMPROBANTE
 public void initComprobante() throws SQLException{
	  this.setVisible(true);
     cbComprobante.removeAllItems();
     List<Comprobante>list = null;
     
     list = ProcCoope.lisComprobante();      
    
     cbComprobante.addItem("");  
     for(int i = 0; i <list.size(); i++) {
         String a = list.get(i).getDescri().toString();
         cbComprobante.addItem(a);
        }
     }
 
//CARGA LISTA DE DEPOSITOS
public void initDepositos() throws SQLException{
	  this.setVisible(true);
    cbDeposito.removeAllItems();
    List<Deposito>list = null;
    
    list = ProcCoope.lisDeposito();      
   
    cbDeposito.addItem("");  
    for(int i = 0; i <list.size(); i++) {
        String a = list.get(i).getDescripcion().toString();
        cbDeposito.addItem(a);
       }
    }

	
	/**
	 * Create the frame.
	 * @throws SQLException 
	 */
	public CargaFacturaUsuarioComprobante(Principal p) throws SQLException {
		setTitle("Carga Factura");
		this.p = p;
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(0, 0, Principal.ancho, Principal.alto);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		JLabel lblUsuario = new JLabel("Usuario");
		lblUsuario.setBounds(10, 32, 53, 14);
		contentPane.add(lblUsuario);
		
//		JComboBox 
		cbUsuarios = new JComboBox();		
		cbUsuarios.setToolTipText("Seleccione usuario");
		cbUsuarios.setBounds(10, 48, 141, 20);
		contentPane.add(cbUsuarios);
		
		JLabel lblDatosNecesariosPara = new JLabel("Datos Necesarios");
		lblDatosNecesariosPara.setFont(new Font("Tahoma", Font.BOLD, 12));
		lblDatosNecesariosPara.setBounds(17, 9, 197, 20);
		contentPane.add(lblDatosNecesariosPara);
		
		JSeparator separator1 = new JSeparator();
		separator1.setBounds(10, 28, 204, 2);
		contentPane.add(separator1);
		
		JLabel lblComprobante = new JLabel("Comprobante");
		lblComprobante.setBounds(10, 75, 123, 14);
		contentPane.add(lblComprobante);
		
//		JComboBox 
		cbComprobante = new JComboBox();
		cbComprobante.setBounds(10, 94, 164, 20);
		contentPane.add(cbComprobante);
		
		JLabel lblFecha = new JLabel("Fecha");
		lblFecha.setBounds(10, 166, 64, 14);
		contentPane.add(lblFecha);
		
		tfFecha = new JTextField();
		tfFecha.setEditable(false);
		tfFecha.setToolTipText("Fecha actual");
		tfFecha.setBounds(65, 163, 86, 20);
		contentPane.add(tfFecha);
		tfFecha.setColumns(10);
		
		JButton btnCancelar = new JButton("Cancelar");
		btnCancelar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				//limpiar y volver.
				cancelar();
			}
		});
		btnCancelar.setBounds(44, 228, 89, 23);
		contentPane.add(btnCancelar);
		
		JButton btnSiguiente = new JButton("Siguiente");
		btnSiguiente.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				//validar lo ingresado y siguiente.
				siguiente();
			}
		});
		btnSiguiente.setBounds(44, 198, 89, 23);
		contentPane.add(btnSiguiente);
		
		JLabel lblDeposito = new JLabel("Deposito");
		lblDeposito.setBounds(10, 119, 53, 14);
		contentPane.add(lblDeposito);
		
		cbDeposito = new JComboBox();
		cbDeposito.setToolTipText("Seleccione dep\u00F3sito");
		cbDeposito.setBounds(10, 135, 141, 20);
		contentPane.add(cbDeposito);
		
		//cargo los ComboBox
		
		initUsuario();
		initComprobante();
		initDepositos();
		fecha();
		
	}
	
	
	public void cerrar(){
		new Principal();
		this.dispose();
	}

	public void siguiente(){
		String usuario, codUsuario, comprobante, deposito;
		int iDepo;
		Comprobante comp;
		if (cbUsuarios.getSelectedIndex() != 0 && cbComprobante.getSelectedIndex() != 0  && cbDeposito.getSelectedIndex() > 0){
			usuario = cbUsuarios.getSelectedItem().toString();
			usuario = ProcCoope.getOperador(usuario).getCodigo();
			iDepo = cbDeposito.getSelectedIndex()-1;
			deposito = Integer.toString(iDepo);
			comprobante = cbComprobante.getSelectedItem().toString();
			comp = ProcCoope.getComprobante(comprobante, 0);
			Date fecha = Logica.Util.getDate(tfFecha.getText());
			p.facturaUsuarioComprobante(usuario, deposito, comp.getTipo_comp(), fecha);
			
			try {
				new CargaFacturaProveedor(this.p);
			} catch (SQLException e) {
				System.out.println("Error al intentar abrir pantalla de seleccion de proveedor: en CARGAFACTURAUSUARIOCOMPROBANTE.JAVA");
				e.printStackTrace();
			}
			
		}else{
			JOptionPane.showMessageDialog(null, "Seleccione usuario y comprobante");
		}
		
	}
	
	public void cancelar(){
		cbUsuarios.setSelectedIndex(0);
		cbComprobante.setSelectedIndex(0);
		p.borraStockUsuarioDeposito();
		this.dispose();
	}
	
	public Principal getP(){
		return p;
	}
}
